package com.ocean.productDict.service.impl;

import java.util.*;

import com.ocean.common.core.domain.entity.SysUser;
import com.ocean.common.utils.ShiroUtils;
import com.ocean.common.utils.uuid.IdUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ocean.productDict.mapper.OAgingMapper;
import com.ocean.productDict.domain.OAging;
import com.ocean.productDict.service.IOAgingService;
import com.ocean.common.core.text.Convert;

/**
 * 产品时效维护Service业务层处理
 *
 * @author ocean
 * @date 2023-01-04
 */
@Service
public class OAgingServiceImpl implements IOAgingService
{
    @Autowired
    private OAgingMapper oAgingMapper;

    /**
     * 查询产品时效维护
     *
     * @param id 产品时效维护主键
     * @return 产品时效维护
     */
    @Override
    public OAging selectOAgingById(String id)
    {
        return oAgingMapper.selectOAgingById(id);
    }

    /**
     * 查询产品时效维护列表
     *
     * @param oAging 产品时效维护
     * @return 产品时效维护
     */
    @Override
    public List<OAging> selectOAgingList(OAging oAging)
    {
        return oAgingMapper.selectOAgingList(oAging);
    }

    /**
     * 新增产品时效维护
     *
     * @param oAging 产品时效维护
     * @return 结果
     */
    @Override
    public int insertOAging(OAging oAging)
    {
        // 设置AGEING的ID为简单UUID
        oAging.setId(IdUtils.simpleUUID());
        // 获取当前登录用户
        SysUser sysUser = ShiroUtils.getSysUser();
        // 设置创建者姓名
        oAging.setCreateName(sysUser.getUserName());
        // 设置创建者登录名
        oAging.setCreateBy(sysUser.getLoginName());
        // 设置创建时间
        oAging.setCreateDate(new Date());
        // 设置更新者姓名
        oAging.setUpdateName(sysUser.getUserName());
        // 设置更新者登录名
        oAging.setUpdateBy(sysUser.getLoginName());
        // 设置更新时间
        oAging.setUpdateDate(new Date());
        // 设置部门ID
        oAging.setDepartId(sysUser.getDeptId().toString());
        // 调用OAgingMapper的insertOAging方法插入AGEING
        return oAgingMapper.insertOAging(oAging);
    }

    /**
     * 修改产品时效维护
     *
     * @param oAging 产品时效维护
     * @return 结果
     */
    @Override
    public int updateOAging(OAging oAging)
    {
        //获取当前登录用户的信息
        SysUser sysUser = ShiroUtils.getSysUser();
        //设置更新用户名
        oAging.setUpdateName(sysUser.getUserName());
        //设置更新人
        oAging.setUpdateBy(sysUser.getLoginName());
        //设置更新时间
        oAging.setUpdateDate(new Date());
         //调用Mapper层更新数据
        return oAgingMapper.updateOAging(oAging);
    }

    /**
     * 批量删除产品时效维护
     *
     * @param ids 需要删除的产品时效维护主键
     * @return 结果
     */
    @Override
    public int deleteOAgingByIds(String ids)
    {
        return oAgingMapper.deleteOAgingByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除产品时效维护信息
     *
     * @param id 产品时效维护主键
     * @return 结果
     */
    @Override
    public int deleteOAgingById(String id)
    {
        return oAgingMapper.deleteOAgingById(id);
    }

    @Override
    public Map<String, List> getCodes() {
        // 创建一个Map类型的变量result，用于存放查询结果
   Map<String, List> result = new HashMap<>();
        // 创建一个List类型的变量codes，用于存放aging的code
        List<String> codes = new ArrayList<>();
        // 调用oAgingMapper的selectOAgingList方法，查询aging列表
        List<OAging> list = oAgingMapper.selectOAgingList(new OAging());
        // 遍历aging列表，将每一个aging的code添加到codes中
        for (OAging aging : list) {
            codes.add(aging.getCode());
        }
        // 将codes添加到result中
        result.put("codes",codes);
        // 返回result
        return result;
    }
}
